//******************************************************//
//														//
//					Vendedor.java						//
//														//
//******************************************************//


package Actores;

import java.util.*;

import Persona.PersonaFisica;
import Misc.Venta;

public class Vendedor extends PersonaFisica {
    private static Float sueldoBasico;    
    private Integer idVendedor; 
    private Calendar fechaIngreso;
    private ArrayList<Venta> listaVentas;
    private ArrayList<Venta> listaVentasMensual;
    private Representante representanteActual;

    // Constructor ====================================
    
    public Vendedor(Integer id, String n, String a, String dt, Integer dn, String d) {
        super(n, a, dt, dn, d);

        idVendedor = id;
        fechaIngreso = Calendar.getInstance();
        listaVentas = new ArrayList<Venta>();
        listaVentasMensual = new ArrayList<Venta>();
        representanteActual = null;
    }
    
    // Setters ========================================    

    public static void setSueldoBasico(Float s) {
        sueldoBasico = s;
    }
    
    public void setRepActual(Representante r) {
        representanteActual = r;
    }
    
    public void setID(Integer idNuevo) {
        idVendedor = idNuevo;
    }
    
    // Getters ========================================
    
    public static Float getSueldoBasico() {
        if (sueldoBasico == null) {
            Scanner entrada = new Scanner (System.in);

            System.out.print("Ingrese sueldo basico: $");
            Float sueldo = entrada.nextFloat();
            
            setSueldoBasico(sueldo);    		
    	} 
        return sueldoBasico;
    }
    
    public Representante getRepActual() {
        return representanteActual;
    }
    
    public Integer getCantVentas() {
        return listaVentas.size();
    }
    
    public Float getSueldoBruto() {
        // Calcular sueldo en base a list_ventas_del_mes
        return 0.0f;
    }
    
    public Integer getID() {
        return idVendedor;
    }
    
    public Calendar getFechaIngreso() {
    	return fechaIngreso;
    }
    
    // Otras funciones ================================   

    @Override
    public String toString() {
        return "ID: " + idVendedor +
                "\n" + super.toString();
    }
    
    public boolean agregarVenta(Venta v) {
        return listaVentas.add(v) && listaVentasMensual.add(v);
    }

    public boolean sos(int nro) {
        return nro == idVendedor;
    }
    
    public Float calcularAntiguedad() {
   	 Calendar fechaHoy = Calendar.getInstance();

   	 // fechaHoy.set(2020,10,10); //SI QUERES PROBAR QUE FUNCA SACALE LAS BARRAS
   	 
   	 Long difMiliseg = fechaHoy.getTimeInMillis() - fechaIngreso.getTimeInMillis();
   	 
   	 Long difDias = difMiliseg / (1000 * 60 * 60 * 24);
   	 
   	 Long difAnios = difDias / 365;
   	 
  /* 	 System.out.println("Dif dias." + difDias);  MAS TARDE SACAR
   	 System.out.println("Dif anios." + difAnios);*/
   	 
  	 if (difAnios >= 1) {
             return ((Vendedor.getSueldoBasico()) * difAnios *  1.01f);
         } else {
             return 0.0f;
         }
    }

    public void listarVentasMes() {
    	if (listaVentasMensual.isEmpty()) {
            System.out.println("El vendedor no tuvo ventas este mes.");
        } else {
            System.out.println("Las ventas mensuales del vendedor son las siguientes:");
            for (Venta v : listaVentasMensual) {
            	System.out.println(v.toString() + "\n");
            }
        }
    }

    public void listarVentasTotales() {
    	if (listaVentas.isEmpty()) {
            System.out.println("El vendedor no tuvo ventas aun.");
        } else {
            System.out.println("Las ventas totales del vendedor son las siguientes:");
            for (Venta v : listaVentas) {
            	System.out.println(v.toString() + "\n");             	
            }
        }
    }

    public void limpiarVentasMes() {
    	listaVentasMensual.clear();
    }     
}